/**
 * Trabajo de Ingeniería de Software 2
 * Año 2008
 * Sistema de Reserva de Recursos.
 * Desarrolladores: - Marcelo Ferreira.
 *                  - Christian Gómez.
 *                  - Marcelo Rodas.
 */
package modelo;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Clase Entidad Estadorecurso (JPA)
 * @author jmferreira
 */
@Entity
@Table(name = "estadorecurso")
@NamedQueries({@NamedQuery(name = "Estadorecurso.findByIdEstadoRecurso", query = "SELECT e FROM Estadorecurso e WHERE e.idEstadoRecurso = :idEstadoRecurso"), @NamedQuery(name = "Estadorecurso.findByDescripcionEstadoRecurso", query = "SELECT e FROM Estadorecurso e WHERE e.descripcionEstadoRecurso = :descripcionEstadoRecurso")})
public class Estadorecurso implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "idEstadoRecurso", nullable = false)
    private Integer idEstadoRecurso;
    @Column(name = "descripcionEstadoRecurso", nullable = false)
    private String descripcionEstadoRecurso;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEstadoRecurso")
    private Collection<Devolucion> devolucionCollection;

    /**
     * Crea una nueva instancia de Estadosolicitud 
     */
    public Estadorecurso() {
    }

    /**
     * Crea una nueva instancia de Estadorecurso con valores especificos
     * @param idEstadoRecurso El idEstadoRecurso de Estadorecurso
     */
    public Estadorecurso(Integer idEstadoRecurso) {
        this.idEstadoRecurso = idEstadoRecurso;
    }

    /**
     * Crea una nueva instancia de Estadorecurso con valores especificos
     * @param idEstadoRecurso El idEstadoRecurso de Estadorecurso
     * @param descripcionEstadoRecurso La descripcionEstadoRecurso de Estadorecurso
     */
    public Estadorecurso(Integer idEstadoRecurso, String descripcionEstadoRecurso) {
        this.idEstadoRecurso = idEstadoRecurso;
        this.descripcionEstadoRecurso = descripcionEstadoRecurso;
    }

    /**
     * Obtiene el idEstadoRecurso de Estadorecurso
     * @return El idEstadoRecurso de Estadorecurso
     */
    public Integer getIdEstadoRecurso() {
        return idEstadoRecurso;
    }

    /**
     * Fija el idEstadoRecurso de Estadorecurso al valor especifiFijacado
     * @param idEstadoRecurso El idEstadoRecurso de Estadorecurso
     */
    public void setIdEstadoRecurso(Integer idEstadoRecurso) {
        this.idEstadoRecurso = idEstadoRecurso;
    }

    /**
     * Obtiene la descripcionEstadoRecurso de Estadorecurso
     * @return La descripcionEstadoRecurso de Estadorecurso
     */
    public String getDescripcionEstadoRecurso() {
        return descripcionEstadoRecurso;
    }

    /**
     * Fija la descripcionEstadoRecurso de Estadorecurso al valor especificado
     * @param descripcionEstadoRecurso La descripcionEstadoRecurso de Estadorecurso
     */
    public void setDescripcionEstadoRecurso(String descripcionEstadoRecurso) {
        this.descripcionEstadoRecurso = descripcionEstadoRecurso;
    }

    /**
     * Obtiene una devolucionCollection de Estadorecurso
     * @return La devolucionCollection de Estadorecurso
     */
    public Collection<Devolucion> getDevolucionCollection() {
        return devolucionCollection;
    }

    /**
     * Fija una devolucionCollection de Estadorecurso al valor especificado
     * @param devolucionCollection La devolucionCollection de Estadorecurso
     */
    public void setDevolucionCollection(Collection<Devolucion> devolucionCollection) {
        this.devolucionCollection = devolucionCollection;
    }

    /**
     * Retorna un valor de Hash para el objeto.
     * Esta implementacion evalua un valor hash basado sobre los campos id en este objeto
     * @return Un valor de hash para este objeto
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idEstadoRecurso != null ? idEstadoRecurso.hashCode() : 0);
        return hash;
    }

    /**
     * Determina si otro objeto es igual a Estadorecurso. El resultado es
     * <code>true</code> si y solo si el argumento no es nulo y es un objeto Estadorecurso
     * que tiene el mismo valor del campo id en este objeto.
     * @param object La referencia objeto con el cual comparar
     * @return <code>true</code> Si este objeto es la misma que su argumento;
     * <code>false</code> si no lo es.
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Estadorecurso)) {
            return false;
        }
        Estadorecurso other = (Estadorecurso) object;
        if ((this.idEstadoRecurso == null && other.idEstadoRecurso != null) || (this.idEstadoRecurso != null && !this.idEstadoRecurso.equals(other.idEstadoRecurso))) {
            return false;
        }
        return true;
    }

    /**
     * Retorna una representacion String de este objeto.  Esta implementacion This implementation construye
     * la representacion basada en los campos id.
     * @return Una representacion String del objeto.
     */
    @Override
    public String toString() {
        return idEstadoRecurso + "[" + this.getDescripcionEstadoRecurso() + "]";
    }
}
